gusucode.com > 黑白棋 V1.0 试用网络版源代码C++源码程序 > 黑白棋 V1.0 试用网络版源代码/BWChess/03D407_庞长才_PROJECT作业/BWChess钻石版/Demo.cpp

    // Demo.cpp : implementation file
//
#include "stdafx.h"
#include "BWChess.h"
#include "Demo.h"
#include "GlobalVar.h"
#include "HelperAPI.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CDemo dialog演示对话框
CDemo::CDemo(CWnd* pParent /*=NULL*/)
	: CDialog(CDemo::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDemo)
	m_BSkill = g_nCbSkill-1;
	m_WSkill = g_nCwSkill-1;
	m_Speed = 3-g_nCSpeed;
	m_FilePath = AfxGetApp()->GetProfileString(_T("Settings"), _T("PathName"), _T(""));
	m_IsFile = g_bIsFromFile;
	//}}AFX_DATA_INIT
	m_DyShow=0;
	m_Success=0;

	CFileStatus status;
	if(!CFile::GetStatus(m_FilePath,status))
		m_FilePath=_T("");
	else
	{
		CFile file(m_FilePath, CFile::modeRead);
		int buffer[9000];
		unsigned int reallen=file.Read(buffer,9000*sizeof(int));
		if(((reallen!=(buffer[0]*sizeof(int))) || (reallen<140)) ||
			(buffer[1]!=EDITION) || !buffer[2])
		{
			m_FilePath=_T("");
		}
		else
			m_Success=1;
	}
}

void CDemo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDemo)
	DDX_Control(pDX, IDC_BROWNS, m_Browns);
	DDX_Control(pDX, IDOK, m_OK);
	DDX_Control(pDX, IDCANCEL, m_Cancel);
	DDX_Radio(pDX, IDC_B1, m_BSkill);
	DDX_Radio(pDX, IDC_W1, m_WSkill);
	DDX_Radio(pDX, IDC_SPEED1, m_Speed);
	DDX_Text(pDX, IDC_FILEPATH, m_FilePath);
	DDX_Check(pDX, IDC_ISFILE, m_IsFile);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDemo, CDialog)
	//{{AFX_MSG_MAP(CDemo)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_ISFILE, OnIsfile)
	ON_BN_CLICKED(IDC_BROWNS, OnBrowns)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDemo message handlers

BOOL CDemo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	HICON m_hIcon = AfxGetApp()->LoadIcon(IDI_SETTING);
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	CenterWindow();
	
	m_OK.SetIcon ( IDI_OPEN );
	m_OK.SetBtnCursor(IDC_HAND);
	m_OK.AddToolTip ( _T("确定") );
	m_OK.SetActiveFgColor(RGB(0,0,255));

	m_Cancel.SetIcon ( IDI_CANCEL );
	m_Cancel.AddToolTip ( _T("取消") );
	m_Cancel.SetBtnCursor(IDC_HAND);
	m_Cancel.SetActiveFgColor(RGB(0,0,255));

	m_Browns.SetIcon ( IDI_OPENFILE );
	m_Browns.SetBtnCursor(IDC_HAND);
	m_Browns.AddToolTip ( _T("打开...") );
	m_Browns.SetActiveFgColor(RGB(0,0,255));

	UpdateData();
	EnableCtrl(m_IsFile);

	return TRUE;  
	              
}

void CDemo::OnCancel() 
{
	DynamicShow(this,0);		
	
	CDialog::OnCancel();
}

void CDemo::OnOK() 
{
	UpdateData();
	if(m_IsFile && (!m_Success))
	{
		MsgBox(IDS_ERROR_NOFILE,IDS_TITLE_CHINESE);
		return;
	}

	g_nCbSkill=m_BSkill+1;
	g_nCwSkill=m_WSkill+1;
	g_nCSpeed=3-m_Speed;
	g_bIsFromFile=m_IsFile;
	DynamicShow(this,0);		
	AfxGetApp()->WriteProfileString(_T("Settings"), _T("PathName"), m_FilePath);    
	CDialog::OnOK();
}

void CDemo::OnPaint() 
{
	CPaintDC dc(this); 
	
	if(m_DyShow==0)
	{
		m_DyShow++;
		DynamicShow(this,1);
	}
}

void CDemo::OnIsfile() 
{
	UpdateData();
	EnableCtrl(m_IsFile);
}

void CDemo::OnBrowns() 
{
	TCHAR sFilter[50]=_T("BWChess File (*.BWS)|*.BWS||");
	CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,sFilter);

	if(dlg.DoModal()==IDOK)
	{
		CFile file(dlg.GetPathName(), CFile::modeRead);
		int buffer[9000];
		unsigned int reallen=file.Read(buffer,9000*sizeof(int));
		if((reallen!=(buffer[0]*sizeof(int))) || (reallen<140))
		{
			MsgBox(IDS_OPENERROR1,IDS_TITLE_CHINESE);
			m_Success=0;
			return;
		}
		if(buffer[1]!=EDITION)
		{
			MsgBox(IDS_OPENERROR2,IDS_TITLE_CHINESE);
			m_Success=0;
			return;
		}
		if(!buffer[2])
		{
			MsgBox(IDS_OPENERROR4,IDS_TITLE_CHINESE);
			m_Success=0;
			return;
		}
		m_Success=1;
		m_FilePath=dlg.GetPathName();
		UpdateData(FALSE);
	}
}

void CDemo::EnableCtrl(BOOL flag)//equal to m_IsFile
{
	GetDlgItem(IDC_B1)->EnableWindow(!flag);
	GetDlgItem(IDC_B2)->EnableWindow(!flag);
	GetDlgItem(IDC_B3)->EnableWindow(!flag);
	GetDlgItem(IDC_W1)->EnableWindow(!flag);
	GetDlgItem(IDC_W2)->EnableWindow(!flag);
	GetDlgItem(IDC_W3)->EnableWindow(!flag);
	m_Browns.EnableWindow(flag);
}